/*
 * Definimos las funciones publicas realizables por un nodo.
 */

#ifndef NODO_H
#define	NODO_H

    
    /*
     * Definimos estructuras de datos usadas en el nodo de trabajo.
     */
    
    struct ASIGNACION_NODO {
        int cantOriginesIntermedios;        // Cantidad de nodos que nos enviarán vectores
        int *originesIntermedios;           // Nodos que nos enviarán vectores intermedios
        long long *tamVectoresIntermedios;  // Tamaño de cada vector que nos enviarán los otros nodos
        long long tamVectorInicial;         // Tamaño del vector inicial
        int destinoFinal;                   // Nodo destinatario del vector resultante de este nodo
    };

   
    /*
     * Esta es la función principal que ejecuta cada uno de los nodos excepto el coordinador
     */
    double nodo();
    
    
    char *imprimirAsignacion(struct ASIGNACION_NODO *asignacion);
    

#endif	/* NODO_H */

